The Jacobi order 9 primes: two other quadratics

From: [email protected]
To: Andrew Granville (E-mail)
Cc: [email protected]
Subject: 3m^2+3m+1
Sent: Fri, 17 Dec 2004 15:42:34 +0000

Dear Andrew, You have Maple, don't you? Here, at home, I've got Maple 6. I'm taking the liberty of sending you a small Maple worksheet I started this morning, and which I've just completed. I've removed all output to reduce its size. I hope it's free of errors, and that you will find it of interest. I've never tried to attach a file from here through the university remote site, so I'm just hoping this works. Take care, John

p = 27*X^2+27*X+7 fell into my lap on the evening of Wed 15th December 2004


The following conjecture
appears to be true (its proof is the real problem). ((p-1)/3)!^3 = 1 (mod p ) for prime p = 1 (mod 3) if and only if p = 27*X^2+27*X+7 for some integer X . It (the above polynomial) came about from considering 3*m^2+3*m+1 with m restricted to m = 3 X + 1. Andrew saw it too - via a different route - at the same time!

27*X^2+27*X+7 forced the resulting primes to have a single '3' in the prime factorisation of ( p-1 ). At the time I thought - such an ugly polynomial, but with such a beautiful consequence. In this worksheet I simply want to emphasise the centrality of the original polynomial 3*m^2+3*m+1 (I believe an eventual proof of the above conjecture will come from somehow exploiting the fact that consecutive cubes mod p are solutions of the congruence 3*x^2+3*x+1 = 0 (mod p ); I've put in a lot of work on that, although with no success so far...)

Weeks ago - while seeking examples of primes p (having what I would like to call the alpha -structure):

p = 2^alpha*3*q[1]*q[2]+1 , with q[1], q[2] primes ( 3 < q[1] ) subject to q[2] = 2^alpha*q[1]+1 or q[2] = 2^alpha*q[1]-1 ,

hoping that all generated primes would satisfy ((p-1)/3)!^3 = 1 (mod p ), I did the following type of calculation:

> P[1,3] := proc(p) local r, k; r := 1;
for k from 2 to (p-1)/3 do
r := mods(r*k, p) od; r; end:

>

In the following I should have started the 'k' at 3, to push up the least value of q[1] (= ithprime(k)) to 5, but, with hindsight, I'm happy to have done a foolish thing, because without it I would probably not have stumbled upon a new insight , the correct way to view 27*X^2+27*X+7 (explained in its proper place below).

> alpha := 1: for k to 100 do
# q[1] being ithprime(k)
if isprime(2^alpha*ithprime(k)+1)
and isprime(2^alpha*3*ithprime(k)*(2^alpha*ithprime(k)+1)+1)
then print(2^alpha*3*ithprime(k)*(2^alpha*ithprime(k)+1)+1,
P[1,3](2^alpha*3*ithprime(k)*(2^alpha*ithprime(k)+1)+1)^3
mod (2^alpha*3*ithprime(k)*(2^alpha*ithprime(k)+1)+1)) fi od;

61, 1

127, 19

331, 1

10267, 1

360187, 1

>

Seeing that (127, 19) output - three weeks ago today - gave me a terrible shock (even with those four 1's), until I realised what was going on: with 'k' - by default - starting at '1', the q[1] that was producing that offending '127' was an extra '3' in the prime factorisation of ( 127-1 ): 127 - 1 = (2^1)*[3]*3[an extra 3]*7. Relief all round...

But, did the '19' in (127, 19) correspond to anything? Of course it did:

> 19^3 mod 127;

1

>

Thus, while neither ((127-1)/3)! nor ((127-1)/3)!^3 came to be 1 (mod 127), ((127-1)/3)!^9 did come out to be 1 mod 127.

The obvious thought - at the time a distraction (one of simply too many others all coming in at the same time), but to revisit at some future date - was that if one modified the alpha-structure for prime p to allow q[1] to be 3 then, if p doesn't have the beautiful property that ((p-1)/3)!^3 = 1 (mod p ), perhaps it has the (still quite lovely) property that ((p-1)/3)!^9 = 1 (mod p ) as a compensation. In short, these primes p could be of interest:

p = 2^alpha*3^2*q[2]+1 , with prime q[2] = 2^alpha*3+1 or q[2] = 2^alpha*3-1

Here, now, are some of them. I don't allow alpha to get beyond 6 where a P[1,3](p) computation is concerned, because that takes a serious amount of time to compute.

> # here p = 2^alpha*9*(2^alpha*3+1)+1
for alpha to 50 do
if isprime(2^alpha*9*(2^alpha*3+1)+1)
then print(alpha, 2^alpha*9*(2^alpha*3+1)+1) fi od;

1, 127

3, 1801

4, 7057

10, 28320769

34, 7968993439997145120769

39, 8160249282403694731591681

> # here p = 2^alpha*9*(2^alpha*3-1)+1
for alpha to 50 do
if isprime(2^alpha*9*(2^alpha*3-1)+1)
then print(alpha, 2^alpha*9*(2^alpha*3-1)+1) fi od;

2, 397

3, 1657

5, 27361

6, 110017

9, 7073281

17, 463855288321

20, 29686804512769

30, 31128880614721191937

32, 498062089951503187969

39, 8160249282393799126941697

>

Now to compute those orders, to see they all pick up an extra '3'

> with(numtheory): # for use of order command

Warning, the protected name order has been redefined and unprotected

> # here p = 2^alpha*9*(2^alpha*3+1)+1
for alpha to 8 do
if isprime(2^alpha*9*(2^alpha*3+1)+1)
then print(alpha, 2^alpha*9*(2^alpha*3+1)+1,
order(P[1,3](2^alpha*9*(2^alpha*3+1)+1), 2^alpha*9*(2^alpha*3+1)+1)) fi od;

1, 127, 9

3, 1801, 9

4, 7057, 9

>

> # here p = 2^alpha*9*(2^alpha*3-1)+1
for alpha to 8 do
if isprime(2^alpha*9*(2^alpha*3-1)+1)
then print(alpha, 2^alpha*9*(2^alpha*3-1)+1,
order(P[1,3](2^alpha*9*(2^alpha*3-1)+1), 2^alpha*9*(2^alpha*3-1)+1)) fi od;

2, 397, 9

3, 1657, 9

5, 27361, 9

6, 110017, 9

>

Now to come to the point:

the essential polynomial is 3*m^2+3*m+1 in general ,
rather than 27*m^2+27*m+7 in particular

Of course the primes we're really interested in happen to be those of the form 3*m^2+3*m+1 , where we restrict m to the arithmetic progression (3 M +1), but look at the lovely things that happen when we allow m to run through the other two related progressions, 3 M and 3 M +2:

First, our old friends, the beautiful primes:

> for m from 1 by 3 while 3*m^2+3*m+1 < 10^5 do
if isprime(3*m^2+3*m+1)
then print(3*m^2+3*m+1, ifactor(3*m^2+3*m),
order(P[1,3](3*m^2+3*m+1), 3*m^2+3*m+1))
fi;
od;

7, ``(2)*``(3), 3

61, ``(2)^2*``(3)*``(5), 3

331, ``(2)*``(3)*``(5)*``(11), 3

547, ``(2)*``(3)*``(7)*``(13), 3

1951, ``(2)*``(3)*``(5)^2*``(13), 3

2437, ``(2)^2*``(3)*``(7)*``(29), 3

3571, ``(2)*``(3)*``(5)*``(7)*``(17), 1

4219, ``(2)*``(3)*``(19)*``(37), 1

7351, ``(2)*``(3)*``(5)^2*``(7)^2, 3

8269, ``(2)^2*``(3)*``(13)*``(53), 3

9241, ``(2)^3*``(3)*``(5)*``(7)*``(11), 3

10267, ``(2)*``(3)*``(29)*``(59), 3

13669, ``(2)^2*``(3)*``(17)*``(67), 1

23497, ``(2)^3*``(3)*``(11)*``(89), 3

25117, ``(2)^2*``(3)*``(7)*``(13)*``(23), 1

55897, ``(2)^3*``(3)*``(17)*``(137), 1

60919, ``(2)*``(3)*``(11)*``(13)*``(71), 3

74419, ``(2)*``(3)*``(79)*``(157), 3

89269, ``(2)^2*``(3)*``(43)*``(173), 1

92401, ``(2)^4*``(3)*``(5)^2*``(7)*``(11), 3

Here m = 3 M . ( p-1 )'s prime factorisation has to pick up at least one extra 3, and in certain cases some others, but always the order seems to be fixed at 9:

> for m from 3 by 3 while 3*m^2+3*m+1 < 10^5 do
if isprime(3*m^2+3*m+1)
then print(3*m^2+3*m+1, ifactor(3*m^2+3*m),
order(P[1,3](3*m^2+3*m+1), 3*m^2+3*m+1))
fi;
od;

37, ``(2)^2*``(3)^2, 9

127, ``(2)*``(3)^2*``(7), 9

271, ``(2)*``(3)^3*``(5), 9

1801, ``(2)^3*``(3)^2*``(5)^2, 9

2269, ``(2)^2*``(3)^4*``(7), 9

2791, ``(2)*``(3)^2*``(5)*``(31), 9

5419, ``(2)*``(3)^2*``(7)*``(43), 9

6211, ``(2)*``(3)^3*``(5)*``(23), 9

7057, ``(2)^4*``(3)^2*``(7)^2, 9

12097, ``(2)^6*``(3)^3*``(7), 9

13267, ``(2)*``(3)^2*``(11)*``(67), 9

19927, ``(2)*``(3)^5*``(41), 9

24571, ``(2)*``(3)^3*``(5)*``(7)*``(13), 9

26227, ``(2)*``(3)^2*``(31)*``(47), 9

33391, ``(2)*``(3)^2*``(5)*``(7)*``(53), 9

35317, ``(2)^2*``(3)^4*``(109), 9

45757, ``(2)^2*``(3)^2*``(31)*``(41), 9

50311, ``(2)*``(3)^2*``(5)*``(13)*``(43), 9

65269, ``(2)^2*``(3)^2*``(7)^2*``(37), 9

70687, ``(2)*``(3)^3*``(7)*``(11)*``(17), 9

73477, ``(2)^2*``(3)^2*``(13)*``(157), 9

82171, ``(2)*``(3)^2*``(5)*``(11)*``(83), 9

88237, ``(2)^2*``(3)^3*``(19)*``(43), 9

Here m = 3 M +2. Again, ( p-1 )'s prime factorisation has to pick up at least one extra 3, and in certain cases some others, but always the order seems to be fixed at 9:

> for m from 2 by 3 while 3*m^2+3*m+1 < 10^5 do
if isprime(3*m^2+3*m+1)
then print(3*m^2+3*m+1, ifactor(3*m^2+3*m),
order(P[1,3](3*m^2+3*m+1), 3*m^2+3*m+1))
fi;
od;

19, ``(2)*``(3)^2, 9

397, ``(2)^2*``(3)^2*``(11), 9

631, ``(2)*``(3)^2*``(5)*``(7), 9

919, ``(2)*``(3)^3*``(17), 9

1657, ``(2)^3*``(3)^2*``(23), 9

3169, ``(2)^5*``(3)^2*``(11), 9

4447, ``(2)*``(3)^2*``(13)*``(19), 9

5167, ``(2)*``(3)^2*``(7)*``(41), 9

11719, ``(2)*``(3)^3*``(7)*``(31), 9

16651, ``(2)*``(3)^2*``(5)^2*``(37), 9

19441, ``(2)^4*``(3)^5*``(5), 9

22447, ``(2)*``(3)^2*``(29)*``(43), 9

27361, ``(2)^5*``(3)^2*``(5)*``(19), 9

42841, ``(2)^3*``(3)^2*``(5)*``(7)*``(17), 9

47251, ``(2)*``(3)^3*``(5)^3*``(7), 9

49537, ``(2)^7*``(3)^2*``(43), 9

59221, ``(2)^2*``(3)^2*``(5)*``(7)*``(47), 9

75367, ``(2)*``(3)^2*``(53)*``(79), 9

81181, ``(2)^2*``(3)^2*``(5)*``(11)*``(41), 9

87211, ``(2)*``(3)^3*``(5)*``(17)*``(19), 9

96661, ``(2)^2*``(3)^3*``(5)*``(179), 9

>

In fact the following appears to be true : ((p-1)/3)!^9 = 1 (mod p ) (but not ((p-1)/3)!^3 = 1 (mod p )) for prime p = 1 (mod 3) if and only if p = 3*m^2+3*m+1 for some integer m <> 1 (mod 3). (i.e., ord[((p-1)/3)!](p) = 9 ). Not quite as beautiful a result as the original, but it does appear to be more deterministic:

rigid '9', rather than 1 or 3.